/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package olimpus.per;

import olimpus.obj.Usuarios;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Leonardo
 */
public class UsuariosPer
{  
   public static Usuarios obtenerUsuarios(Connection con, String xUsuario) throws Exception
   {
        Usuarios objUsuarios = new Usuarios();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                       "from USUARIOS "+
                                                         "where USUARIO=? ");
            st.setString(1, xUsuario);

            ResultSet resultado = st.executeQuery();

            if(resultado.next())
            {
                objUsuarios.setUsuario(resultado.getString("USUARIO"));
                objUsuarios.setNombre(resultado.getString("NOMBRE"));
                objUsuarios.setPassword(resultado.getString("PASSWORD"));
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return objUsuarios;
   }

   public static boolean existeUsuarios(Connection con, String xUsuario) throws Exception
   {
        try
        {
            PreparedStatement st=con.prepareStatement("select count(*) as EXISTE " +
                                                      "from USUARIOS " +
                                                         "where USUARIO=? ");

            st.setString(1, xUsuario);

            ResultSet resultado = st.executeQuery();

            if (resultado.next())
            {
                if (resultado.getInt("EXISTE")==0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return false;
   }

   public static ArrayList<Usuarios> obtenerColeccionUsuarios(Connection con) throws Exception
   {
        ArrayList colUsuarios = new ArrayList();

        try
        {
            PreparedStatement st=con.prepareStatement("select * " +
                                                      "from USUARIOS");

            ResultSet resultado = st.executeQuery();

            while (resultado.next())
            {
                Usuarios objUsuarios = new Usuarios();

                objUsuarios.setUsuario(resultado.getString("USUARIO"));
                objUsuarios.setNombre(resultado.getString("NOMBRE"));
                objUsuarios.setPassword(resultado.getString("PASSWORD"));

                colUsuarios.add(objUsuarios);
            }
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
        return colUsuarios;
    }

    public static void altaUsuarios(Connection con, Usuarios xObjUsuarios) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("insert into USUARIOS " +
                                                      "values (?,?,?)");

            st.setString(1, xObjUsuarios.getUsuario());
            st.setString(2, xObjUsuarios.getNombre());
            st.setString(3, xObjUsuarios.getPassword());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void bajaUsuarios(Connection con, Usuarios xObjUsuarios) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("delete from USUARIOS " +
                                                         "where USUARIO=? ");

            st.setString(1, xObjUsuarios.getUsuario());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }

    public static void modificaUsuarios(Connection con, Usuarios xObjUsuarios) throws Exception
    {
        try
        {
            PreparedStatement st=con.prepareStatement("update USUARIOS " +
                                                      "set NOMBRE=?, "+
                                                      "PASSWORD=? "+
                                                         "where USUARIO=? ");

            st.setString(1, xObjUsuarios.getNombre());
            st.setString(2, xObjUsuarios.getPassword());
            st.setString(3, xObjUsuarios.getUsuario());

            st.executeUpdate();
        }
        catch (SQLException ex)
        {
            throw new Exception("Persistencia--> " + ex.getMessage());
        }
    }
}
